package util.readedFiles;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.ArrayUtils;

public abstract class Grabable {

	private List<int[]> entrada;
	private List<String[]> salida;

	/**
	 * @return the entrada
	 */
	public List<int[]> getEntrada() {
		return entrada;
	}

	/**
	 * @param entrada the entrada to set
	 */
	public void setEntrada(List<int[]> entrada) {
		this.entrada = entrada;
	}

	/**
	 * @return the salida
	 */
	public List<String[]> getSalida() {
		return salida;
	}

	public Grabable(final List<int[]> entrada) {
		this.entrada = entrada;
	}

	public abstract void generarSalida(int x);

	public final boolean grabarArchivo(final String path) {
		ArchivoGrabacion salida = new ArchivoGrabacion(path);
		for (String[] linea : this.salida) {
			if (!salida.grabarLinea(ArrayUtils.toString(linea)))
				return false;
		}
		return salida.cerrar();
	}

	public final boolean agregarLineaAEntrada(final int[] linea) {
		if (this.entrada == null)
			this.entrada = new ArrayList<int[]>();
		return this.entrada.add(linea);
	}

	public final boolean agregarLineaASalida(final String[] linea) {
		if (this.salida == null)
			salida = new ArrayList<String[]>();
		return this.salida.add(linea);
	}
}
